# OSI 7계층과 TCP/IP 4계층 모델
우리가 우리의 컴퓨터에서 다른 사람의 컴퓨터로 통신할 때, 네트워크 통신을 하게 됩니다.
모든 컴퓨터는 네트워크 통신을 할 때 기본적으로 OSI 7계층 모델 혹은 TCP/IP 4계층 모델에 맞춰 동작합니다.
# 네트워크 통신이 일어나는 과정
네트워크 통신 과정에 대해서 먼저 생각해봅시다. 네트워크 통신은 언제 일어날까요?
우리가 컴퓨터를 켠 뒤, 크롬 브라우저를 열어 네이버 웹사이트를 접속한다고 하면 아래와 같은 흐름으로 통신이 이뤄집니다.
- 우리는 크롬 브라우저 검색창에서
https://www.naver.com
을 입력합니다. - 크롬 브라우저는 이를 네트워크에서 통신 가능한 형태로 만듭니다. (보통 패킷이라고 부릅니다)
- 이 패킷을 네트워크에 흘려보냅니다.
- 네트워크 중간에 있는 기기(라우터)들이 이 패킷을 읽고 네이버 서버로 전달합니다.
- 네이버 서버는 이 패킷을 다시 풀어, 웹서버가 읽을 수 있는 형태로 만들고 웹서버에 전달합니다.
여기서 중요한 점은, 우리는 단순히 사람이 이해할 수 있는 URL만을 입력했지만 내부적으로 "패킷"과 같은 특정 형태로 데이터로 만든다는 것입니다. 또한 이렇게 만들어진 패킷은 수신받는 쪽에서 다시 사람이 이해할 수 있는 데이터로 만들어진다는 것입니다.
TIP
여기서는 뭉뚱그려 패킷
이라고 표현했지만, 실제로는 아래에서 설명할 OSI 7계층 각각 다른 이름(메시지, 세그먼트, 패킷, 프레임)이 있습니다. 설명의 편의를 위하여 일단은 그래도 익숙한 단어인 "패킷"이라 표현했습니다.
# 네트워크 통신을 OSI 7계층 모델로 이해하기
위 과정을 "OSI 7계층 모델" 이란 개념 위에서 표현하면 다음 그림과 같게 됩니다.
위 그림에서 우리는 송신 호스트
가 되고 네이버 서버는 수신 호스트
가 됩니다.
- 먼저 우리는 브라우저라는
응용(애플리케이션) 계층
에서 데이터(URL)를 입력합니다. - 이 데이터는 전송 전에 내부적으로
표현 계층
,세션 계층
,전송 계층
,네트워크 계층
,데이터 링크 계층
을 차례대로 지나며 네트워크 통신에 필요한 데이터를 기존 데이터에 추가합니다.- 각 계층은 순서를 가지며,
응용 계층
->물리 계층
순으로 전달됩니다. - 각 계층은 이전 계층으로부터 데이터를 전달받으며, 자신의 계층에서 필요한 데이터들을 기존 데이터에 추가로 붙입니다.
- 데이터를 붙인다는 것은 예를 들어 어떤 IP로 전달할지 등의 정보를 더한다는 것입니다.
- 각 계층은 순서를 가지며,
- 물리 계층에서는 이렇게 계층을 지나며 만든 데이터를 실제로 네트워크에 전송합니다.
- 네이버 서버는 이 데이터를 수신받아 다시
물리 계층
->응용 계층
순으로 전달합니다.- 각 계층은 마찬가지로 이전 데이터로부터 데이터를 전달받으며, 필요한 데이터만 분리하여 해석합니다.
- 최종적으로
응용 계층
에서는 요청을 웹서버에 전달한 뒤, 웹서버는 송신자에게 필요한 응답(네이버 메인 페이지)를 다시 데이터로 만들게 됩니다
# 프로토콜이란
네트워크 공부를 하다 보면 프로토콜이란 단어가 참 자주 등장합니다. 프로토콜은 무엇일까요?
두 사람이 편지를 주고받는다고 합시다. 편지를 주고받으려면 누가 누구에게, 어디로 보내는지, 어떤 내용을 담을지에 대해 우체부에게 알려줘야 합니다. 두 사람과 우체부는 이런 정보를 다음과 같은 형태로 남기자고 약속했다고 합시다.
FROM: 보내는 사람
TO: 받을 사람
ADDRESS: 받는 사람 주소
MESSAGE: 전달할 내용
이 형태를 사용하는 방법은 예를 들면 다음과 같습니다.
FROM: 그랩
TO: 하디
ADDRESS: 서울시 서울숲역 디타워 5층
MESSAGE: 하디, 잘 지내고 있나요?
이제 우체부는 위 내용을 보고 잘 이해한 뒤, 편지를 잘 전달해줄 수 있을 것입니다.
위 형태처럼 통신을 위해 형태 또는 규약을 "프로토콜"이라고 합니다. 여기서는 두 사람과 우체부가 이 프로토콜을 사용했다고 할 수 있습니다. 네트워크에서는 많은 프로토콜이 있는데, 모두 데이터를 올바르게 전달하고 받기 위해 존재합니다. 여러분이 익히 들어본 HTTP, TCP, UDP가 바로 이러한 프로토콜의 대표적인 예시입니다.
# OSI 7계층 모델이란?
OSI 7계층이란 위에서 보았듯, 네트워크 통신의 과정을 7단계의 계층으로 나눈 설계를 의미합니다. 이렇게 계층을 나누어 놓으면 무엇이 좋을까요?
- 전체적으로 필요한 일을 여러 계층으로 나누면, 계층별 해야 할 일이 명확해집니다.
- 전체적인 설계 모델이 있음으로써, 설명하기도 이해하기도 쉽습니다.
- 각 층을 나누면 각 층별로 필요한 데이터들을 표준화할 수도 있습니다.
OSI 7계층 모델은 국제표준화기구에서 개발한 네트워크 통신 표준 모델입니다.
*OSI 7계층 모델의 탄생 배경
1980년대 컴퓨터 통신망이 확산하면서 다양한 통신망들이 등장하고 더불어 매우 복잡해졌습니다. 이에 따라 기능별 분류의 필요성이 느껴지기 시작했는데, 통신망별 정보교환을 위한 별도의 절차를 마련하는 것은 비효율적이므로 다른 제조업자의 시스템이라도 네트워크 유형과 관계없이 상호 통신이 가능한 지침이 필요해졌습니다. 이에 컴퓨터 간의 네트워크의 필요성이 절실하게 대두되자 ISO(국제표준화기구)는 OSI 7 계층이라는 새로운 네트워크 모델을 발표하게 됩니다.
# 각 계층이 하는 일
그럼 이제 각 계층이 실제로 어떤 일을 하고 있고, 어떤 데이터를 만드는지(붙이는지) 간략하게 알아봅시다.
(출처: https://www.techpluto.com/osi-model-explanation/)
- 계층 7: 응용 계층 (Application Layer)
- 이 계층은 웹 서비스의 UI 부분, 사용자의 입출력(I/O)을 담당합니다.
- 우리가 보통 개발하는 프론트 엔드, 백엔드 서버가 바로 이 레이어 위에서 동작합니다.
- 즉 대부분의 사람이 사용하는 웹 서비스는 이 레이어 위에서 제공된다고 생각하면 됩니다.
- 계층 6. 표현 계층 (Presentation Layer)
- 응용 계층과 네트워크 계층을 위해 계층 간 데이터를 적절히 표현하는 부분을 담당합니다.
- 이미지를 압축한다든가, 데이터를 암호화한다는가 등의 기능이 이 레이어 위에서 동작합니다.
- 계층 5. 세션 계층 (Session Layer)
- 통신은 실제로 "세션"이라고 하는 단위 위에서 이루어지는데, 이 계층은 이러한 통신 세션을 구성합니다.
- 계층 4. 전송 계층 (Transport Layer)
- 컴퓨터로 들어온 네트워크 데이터를 어느 포트(어느 프로세스)로 보낼지 담당합니다.
- 하나의 컴퓨터에는 여러 프로세스가 동작하고 있으며 프로세스마다 별도의 네트워크 포트를 가지게 됩니다.
- 예를 들면 하나의 컴퓨터에 프론트엔드 애플리케이션은
80
포트를, 백엔드 애플리케이션은8080
포트에 배포 할 수 있습니다. - 네트워크 데이터가 들어오면, 이를
80
포트(프론트엔드 애플리케이션)로 보낼지,8080
포트(백엔드 애플리케이션)로 보낼지를 담당하는 것입니다.
- 예를 들면 하나의 컴퓨터에 프론트엔드 애플리케이션은
- 또한 네트워크가 끊기거나 데이터가 잘못된 것은 없는지 등 신뢰성 있는 데이터를 보장하는 역할을 담당합니다.
- 계층 3. 네트워크 계층 (Network Layer)
- IP주소를 사용하여 네트워크 데이터를 어느 컴퓨터로 보낼지 담당합니다.
- IP 주소는 컴퓨터당 하나가 부여되지만, 중간에 바뀔 수 있으며 소프트웨어적으로 존재하는 개념입니다.
- 흔히 말하는 "라우터"라는 기계가 이러한 역할을 해줍니다.
- IP주소를 사용하여 네트워크 데이터를 어느 컴퓨터로 보낼지 담당합니다.
- 계층 2. 데이터 링크 계층 (Data Link Layer)
- 네트워크 카드의 MAC 주소를 사용해 네트워크 데이터를 어느 컴퓨터로 보낼지 담당합니다.
- MAC 주소는 랜카드당 하나가 존재합니다.
- 즉 IP 주소랑은 다르게 변하지 않으며, 하드웨어 자체에 포함되는 개념입니다.
- 네트워크 카드의 MAC 주소를 사용해 네트워크 데이터를 어느 컴퓨터로 보낼지 담당합니다.
- 계층 1. 물리 계층 (Physical)
- 디지털 데이터를 아날로그적인 전기적 신호로 변환하여 네트워크 전선에 흘려보냅니다.
- 네트워크 전선은
0101
과 같은 디지털 신호를 이해할 수 없습니다. - 따라서 이런 디지털 데이터를 네트워크 전선이 이해할 수 있는 아날로그 형태로 바꿉니다.
- 네트워크 전선은
- 반대로 아날로그 신호를 디지털 신호로 바꾸는 역할도 합니다.
- 디지털 데이터를 아날로그적인 전기적 신호로 변환하여 네트워크 전선에 흘려보냅니다.
# TCP/IP 4계층 모델이란?
사실 OSI 7계층 모델은 네트워크 통신 표준화를 위한 개념 모델입니다. 즉 실제로 인터넷 통신이 이렇게 동작하지는 않고, 이렇게 계층을 나누어 통신하도록 설계하자는 국제표준화기구의 제안이라 생각하면 됩니다.
실제 대부분의 인터넷 통신은 IP와 TCP에 기반한 일명 TCP/IP 통신을 사용합니다. 그리고 이 통신에 특화된 네트워크 통신 계층 모델이 따로 존재하는데, 이걸 "TCP/IP 4계층 모델"이라고 합니다. OSI 7계층과 유사하지만, 아래 그림의 오른쪽 그림처럼 4계층으로 간소화되어 있습니다.
(출처: https://www.pearsonitcertification.com/articles/article.aspx?p=2873377)
4계층이 각기 어떤 일을 담당하는지 간략히 알아봅시다. OSI 7계층 모델에 대해서 알았다면, TCP/IP 4계층 모델은 이해하기 쉽습니다.
- 계층 4: 응용 계층 (Application Layer)
- OSI 7계층 모델의 7,6,5(용용, 표현, 세션) 계층 기능을 담당합니다.
- HTTP, Telnet, SSH, FTP와 같은 프로토콜이 여기에서 사용됩니다.
- 계층 3: 전송 계층 (Transport Layer)
- OSI 7계층 모델의 4(전송) 계층과 같습니다. 프로세스 간의 신뢰성 있는 데이터 전송을 담당합니다.
- TCP, UDP와 같은 프로토콜이 여기에서 사용됩니다.
- 계층 2: 인터넷 계층 (Internet Layer)
- OSI 7 계층 모델의 3(네트워크) 계층과 같습니다. 컴퓨터 간 라우팅을 담당합니다.
- 계층 1: 네트워크 인터페이스 계층 (Network Interface Layer)
- OSI 7계층 모델의 2, 1(데이터 링크, 물리) 계층과 같습니다. 네트워크 통신의 물리적인 부분들을 주로 포함합니다.
# HTTP vs HTTPS
HTTPS도 네트워크 하면 항상 나오는 주제인데요. HTTPS가 무엇이고, OSI 계층 레이어와 어떤 연관이 있는지 간략히 알아봅시다.
먼저 HTTP는 Hyper Text Transfer Protocol의 약자로, 말 그대로 텍스트 문서를 주고 받기 위해 만들어진 프로토콜입니다. 우리가 일상에서 사용하는 웹브라우저와 서버가 바로 이 HTTP을 사용하여 정보를 주고받습니다. 인터넷 초기에는 HTTP만 사용하여 웹에서 정보를 주고받았습니다만, 곧 이 방법이 보안에 취약하다는 것을 알게 됩니다. 예를 들면 웹사이트에서 로그인할 때 비밀번호가 통신 과정 중 그대로 노출이 되었습니다. 이 때문에 통신 과정에도 응용 계층의 데이터를 암호화할 필요성이 느껴졌는데, 이로 인해 보안을 위한 레이어 SSL(Secure Sockets Layer, 현재는 TLS라는 명칭으로도 사용)가 생기게 됩니다. 이 레이어는 응용 계층과 전송 계층 사이에 존재합니다.
(출처: https://www.lesstif.com/ws/ssl-tls-https-43843962.html)
이렇게 보안의 역할을 하는 SSL 계층을 기반으로 하는 HTTP 통신을 HTTPS라고 합니다. (마지막 S가 Secure의 약자입니다.) HTTPS는 통신 보안을 포함하고 있으므로, 당연히 HTTP보다 더 좋습니다. 다만 내용을 암호화하고 복호화하는 로직이 추가되었으므로, 기존보다 통신 로직이 좀 더 복잡해집니다. HTTPS 동작 방식에 대한 자세한 내용은 아래 "더 읽어보면 좋을 내용"들을 참고하세요.
# 정리
네트워크 통신 모델에 대해 아래 2개의 모델과 통신 과정에 대해 배웠습니다.
- OSI 7계층 모델
- ISO가 발표한 네트워크 통신 표준 모델입니다. (개념 모델)
- 각 계층은 저마다의 맡은 기능이 있으며, 사용하는 프로토콜도 다릅니다.
- 각 계층은 직전 계층에서 데이터를 전달받으며, 필요한 데이터를 붙여서 다음 계층으로 보냅니다.
- 즉 우리가 송신자면 7계층(L7) 부터 시작해 1계층(L1)까지 데이터를 만들어 보낸 뒤, 수신자는 다시 1계층부터 7계층까지의 과정을 거쳐 최종적으로 데이터를 받습니다.
- TCP/IP 4계층 모델
- TCP/IP는 우리가 보통 많이 쓰는 TCP/IP 통신에 기반한 네트워크 통신 모델입니다.
- OSI 7계층과 유사하지만, 4계층으로 간소화되어 있습니다.
# 더 읽어보면 좋을 내용
- Steven님 블로그 - TCP vs UDP (opens new window)
- TCP와 UDP의 통신 절차, 데이터 모양을 상세히 설명해주는 글입니다.
- 통신이 구체적으로 어떻게 동작하는지 가볍게 한 번 훑어보시기 좋습니다.
- [Evan moon님 블로그 글]
- 패킷의 흐름과 오류를 제어하는 TCP (opens new window)
- 사이 좋게 네트워크를 나눠 쓰는 방법, TCP의 혼잡 제어 (opens new window)
- TCP가 연결을 생성하고 종료하는 방법, 핸드쉐이크 (opens new window)
- 흐름 제어, 오류 제어, 혼잡 제어, 핸드쉐이크는 TCP의 중요한 특징 중 하나입니다.
- 이에 대해 친절히 설명해주는 글이므로, 읽어보시길 추천힙니다.
- Dololok님 블로그 - [HTTP] HTTPS란? 비전공자를 위한 HTTPS 개념 알아보기 (opens new window)
- HTTPS의 동작 방식에 대해 상세히 설명해주는 글입니다.
- 공개키, 개인키, 인증서 등의 키워드를 들어본 적은 있으나 잘 모르시는 분들은 읽어보시면 좋습니다.